#ifndef NETMAIN_H
#define NETMAIN_H

#include <QObject>
#include <QJsonArray>
class QTcpSocket;
class NetMain : public QObject
{
    Q_OBJECT
protected:
    explicit NetMain(QObject *parent = nullptr);

public:

    static NetMain *getObject();
    /**
     * @brief setCarAlarm控制车辆报警器
     * @param carId
     * @param sw
     */
    void  setCarAlarm(int carId, bool sw);
    /**
     * @brief setCarAlarmLight
     * @param carId
     * @param sw
     */

    void  setCarAlarmLight(int carId, bool sw);
    /**
     * @brief setCarLight
     * @param carId
     * @param sw
     */
    void  setCarLight(int carId, bool sw);
    /**
     * @brief setCarStatus
     * @param carId
     * @param sw
     */
    void  setCarStatus(int carId, bool sw);
    /**
     * @brief setJunNode设置路口模式
     * @param junId id
     * @param mode 0-正常
     *             1-管控
     *             2-夜间
     *             3-水平通行
     *             4-垂直通行
     */

    void setJunNode(int junId,int mode);

signals:
     void newCarPos(int carId, int roundId, int roundPos);
     /**
      * @brief newLameColor
      * @param junctionId
      * @param lameId
      * @param color 0——绿色 1——黄色 2红色 3——白色/熄灭
      */
     void newLampColor(int junctionId, int lampId,int color);

protected slots:
    void clientReadyReadSlot();

protected:
    void connectToHost();
    void sendIdentity();
    void handleFrame(const QJsonObject &obj);
    void handleCarPosFrame(const QJsonObject &obj);
    void handleLampFrame(const QJsonObject &obj);

    static NetMain *obj;
    QTcpSocket *client;

};

#endif // NETMAIN_H
